@flodesk/grain 10.17.4 → 10.19.0

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 (83) hide show
  1. package/es/components/arrange.js +74 -34
  2. package/es/components/autocomplete.js +132 -28
  3. package/es/components/autocomplete2.js +359 -0
  4. package/es/components/badge.js +7 -8
  5. package/es/components/box.js +85 -14
  6. package/es/components/box2.js +223 -0
  7. package/es/components/button.js +8 -26
  8. package/es/components/checkbox.js +12 -18
  9. package/es/components/dropdown.js +81 -28
  10. package/es/components/flex.js +72 -36
  11. package/es/components/index.js +5 -1
  12. package/es/components/link.js +27 -16
  13. package/es/components/modal.js +89 -68
  14. package/es/components/nav.js +9 -19
  15. package/es/components/pagination.js +4 -4
  16. package/es/components/popover.js +33 -12
  17. package/es/components/provider.js +14 -0
  18. package/es/components/select.js +12 -10
  19. package/es/components/slider.js +6 -17
  20. package/es/components/spinner.js +4 -14
  21. package/es/components/stack.js +5 -4
  22. package/es/components/switch.js +5 -17
  23. package/es/components/tab.js +1 -1
  24. package/es/components/text-button.js +13 -12
  25. package/es/components/text-input.js +64 -47
  26. package/es/components/text.js +84 -28
  27. package/es/components/text2/index.js +100 -0
  28. package/es/components/text2/styles.module.css +22 -0
  29. package/es/components/textarea.js +34 -20
  30. package/es/components/toast.js +16 -53
  31. package/es/components/tooltip.js +4 -4
  32. package/es/foundational/field.js +52 -28
  33. package/es/foundational/menu.js +138 -60
  34. package/es/foundational/styles.js +11 -11
  35. package/es/hooks/index.js +2 -1
  36. package/es/hooks/useOnClickOutside.js +7 -6
  37. package/es/hooks/usePrev.js +8 -0
  38. package/es/icons/icon-archive.js +21 -0
  39. package/es/icons/icon-at.js +21 -0
  40. package/es/icons/icon-bold.js +28 -0
  41. package/es/icons/icon-bullet-list.js +21 -0
  42. package/es/icons/icon-column-and-rows.js +21 -0
  43. package/es/icons/icon-columns-and-row.js +21 -0
  44. package/es/icons/icon-columns.js +21 -0
  45. package/es/icons/icon-folder-move.js +21 -0
  46. package/es/icons/icon-folder-remove.js +21 -0
  47. package/es/icons/icon-italic.js +28 -0
  48. package/es/icons/icon-number-list.js +21 -0
  49. package/es/icons/icon-row-and-columns.js +21 -0
  50. package/es/icons/icon-rows-and-column.js +21 -0
  51. package/es/icons/icon-rows.js +21 -0
  52. package/es/icons/icon-strike.js +28 -0
  53. package/es/icons/icon-text-justify.js +21 -0
  54. package/es/icons/icon-underline.js +28 -0
  55. package/es/icons/index.js +18 -1
  56. package/es/index.js +2 -1
  57. package/es/styles/base.js +2 -0
  58. package/es/styles/colors/core.js +2 -0
  59. package/es/styles/colors/experimental.js +2 -0
  60. package/es/styles/colors/index.js +4 -0
  61. package/es/styles/colors/theme.js +2 -0
  62. package/es/styles/index.js +6 -0
  63. package/es/styles/shadows.js +2 -0
  64. package/es/styles/utilities.js +108 -0
  65. package/es/styles/variables.js +2 -0
  66. package/es/types.js +18 -7
  67. package/es/utilities/attributes.js +66 -0
  68. package/es/utilities/helpers.js +13 -1
  69. package/es/utilities/index.js +3 -1
  70. package/es/utilities/responsive.js +3 -0
  71. package/es/utilities/style-config.js +442 -0
  72. package/es/utilities/styles.js +14 -2
  73. package/es/variables/breakpoints.js +9 -0
  74. package/es/variables/colors.js +2 -1
  75. package/es/variables/index.js +2 -1
  76. package/es/variables/vars.js +3 -0
  77. package/package.json +1 -1
  78. package/es/styles/base.css +0 -53
  79. package/es/styles/colors/core.css +0 -74
  80. package/es/styles/colors/experimental.css +0 -3
  81. package/es/styles/colors/theme.css +0 -92
  82. package/es/styles/shadows.css +0 -60
  83. package/es/styles/variables.css +0 -66
package/es/icons/index.js CHANGED
@@ -22,7 +22,9 @@ export { default as IconDuplicate } from './icon-duplicate';
22
22
  export { default as IconEllipsis } from './icon-ellipsis';
23
23
  export { default as IconFile } from './icon-file';
24
24
  export { default as IconFolder } from './icon-folder';
25
+ export { default as IconFolderRemove } from './icon-folder-remove';
25
26
  export { default as IconFolderAdd } from './icon-folder-add';
27
+ export { default as IconFolderMove } from './icon-folder-move';
26
28
  export { default as IconGear } from './icon-gear';
27
29
  export { default as IconGlobe } from './icon-globe';
28
30
  export { default as IconHeart } from './icon-heart';
@@ -44,6 +46,7 @@ export { default as IconTablet } from './icon-tablet';
44
46
  export { default as IconTextAlignCenter } from './icon-text-align-center';
45
47
  export { default as IconTextAlignLeft } from './icon-text-align-left';
46
48
  export { default as IconTextAlignRight } from './icon-text-align-right';
49
+ export { default as IconTextJustify } from './icon-text-justify';
47
50
  export { default as IconTrash } from './icon-trash';
48
51
  export { default as IconType } from './icon-type';
49
52
  export { default as IconUndo } from './icon-undo';
@@ -56,4 +59,18 @@ export { default as IconQuestion } from './icon-question';
56
59
  export { default as IconReset } from './icon-reset';
57
60
  export { default as IconDrag } from './icon-drag';
58
61
  export { default as IconLocation } from './icon-location';
59
- export { default as IconPlay } from './icon-play';
62
+ export { default as IconPlay } from './icon-play';
63
+ export { default as IconArchive } from './icon-archive';
64
+ export { default as ColumnsAndRow } from './icon-columns-and-row';
65
+ export { default as ColumnAndRows } from './icon-column-and-rows';
66
+ export { default as Columns } from './icon-columns';
67
+ export { default as Rows } from './icon-rows';
68
+ export { default as RowAndColumns } from './icon-row-and-columns';
69
+ export { default as RowsAndColumn } from './icon-rows-and-column';
70
+ export { default as IconItalic } from './icon-italic';
71
+ export { default as IconStrike } from './icon-strike';
72
+ export { default as IconBold } from './icon-bold';
73
+ export { default as IconUnderline } from './icon-underline';
74
+ export { default as IconBulletList } from './icon-bullet-list';
75
+ export { default as IconNumberList } from './icon-number-list';
76
+ export { default as IconAt } from './icon-at';
package/es/index.js CHANGED
@@ -2,4 +2,5 @@ export * from './components';
2
2
  export * from './icons';
3
3
  export * from './variables';
4
4
  export * from './utilities';
5
- export * from './hooks';
5
+ export * from './hooks';
6
+ export * from './foundational';
@@ -0,0 +1,2 @@
1
+ var base = "\n :root {\n --grn-lineHeight-fixed: 7px;\n --grn-lineHeight-relative: 0.9em;\n --grn-lineHeight-global: calc(var(--grn-lineHeight-fixed) + var(--grn-lineHeight-relative));\n\n --grn-font-global: 'Flodesk Sans', sans-serif;\n --grn-radius-button: var(--grn-radius-s);\n }\n\n .grn-context,\n .grn-context * {\n line-height: var(--grn-lineHeight-global);\n outline-color: var(--grn-color-selection);\n }\n\n .grn-context {\n font-family: var(--grn-font-global);\n font-size: var(--grn-text-m);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n\n [data-theme],\n .grn-context {\n color: var(--grn-color-content);\n }\n\n *,\n *:before,\n *:after {\n box-sizing: border-box;\n }\n\n .grn-link-context a {\n transition: var(--grn-transition-slow);\n text-underline-position: under;\n text-underline-offset: calc(2px - 0.1em);\n color: inherit;\n cursor: pointer;\n text-decoration-color: var(--grn-color-fade3);\n }\n\n .grn-link-context a:hover {\n transition: var(--grn-transition-fast);\n text-decoration-color: currentColor;\n }\n\n .grn-link-context a:active {\n transition: var(--grn-transition-xxFast);\n }\n";
2
+ export default base;
@@ -0,0 +1,2 @@
1
+ var core = "\n :root {\n --white: hsl(0 0% 100%);\n --H: 13.85;\n --S: 7%;\n --HS: var(--H) var(--S);\n --bfS: 20%;\n --wfS: calc(100% - var(--bfS));\n }\n\n :root {\n --redHS: 6 55%;\n --redL: 52%;\n\n --grn-color-blue: hsl(218 74% 54%);\n --grn-color-red: hsl(var(--redHS) var(--redL));\n --grn-color-yellow: hsl(44 99% 59%);\n --grn-color-green: hsl(153 22% 57%);\n }\n\n :root {\n --shadeS-13: 20%;\n --shadeS-12: 22%;\n --shadeS-11: 15%;\n --shadeS-10: 12%;\n --shadeS-9: 9%;\n --shadeS-8: 7%;\n --shadeS-7: 5%;\n --shadeS-6: 6%;\n --shadeS-5: 7%;\n --shadeS-4: 7%;\n --shadeS-3: 7%;\n --shadeS-2: 6%;\n --shadeS-1: 6%;\n }\n\n :root {\n --shade13-s: var(--shadeS-13);\n --shade12-s: var(--shadeS-12);\n --shade11-s: var(--shadeS-11);\n --shade10-s: var(--shadeS-10);\n --shade9-s: var(--shadeS-9);\n --shade8-s: var(--shadeS-8);\n --shade7-s: var(--shadeS-7);\n --shade6-s: var(--shadeS-6);\n --shade5-s: var(--shadeS-5);\n --shade4-s: var(--shadeS-4);\n --shade3-s: var(--shadeS-3);\n --shade2-s: var(--shadeS-2);\n --shade1-s: var(--shadeS-1);\n }\n\n [data-theme='dark'], [data-theme='invert'] {\n --shade13-s: var(--shadeS-1);\n --shade12-s: var(--shadeS-2);\n --shade11-s: var(--shadeS-3);\n --shade10-s: var(--shadeS-4);\n --shade9-s: var(--shadeS-5);\n --shade8-s: var(--shadeS-6);\n --shade7-s: var(--shadeS-7);\n --shade6-s: var(--shadeS-8);\n --shade5-s: var(--shadeS-9);\n --shade4-s: var(--shadeS-10);\n --shade3-s: var(--shadeS-11);\n --shade2-s: var(--shadeS-12);\n --shade1-s: var(--shadeS-13);\n }\n\n :root,\n [data-experimental] {\n --grn-color-shadeTone13: hsl(var(--H) var(--shade13-s) 10%);\n --grn-color-shadeTone12: hsl(var(--H) var(--shade12-s) 11.5%);\n --grn-color-shadeTone11: hsl(var(--H) var(--shade11-s) 15%);\n --grn-color-shadeTone10: hsl(var(--H) var(--shade10-s) 21%);\n --grn-color-shadeTone9: hsl(var(--H) var(--shade9-s) 28%);\n --grn-color-shadeTone8: hsl(var(--H) var(--shade8-s) 38%);\n --grn-color-shadeTone7: hsl(var(--H) var(--shade7-s) 51%);\n --grn-color-shadeTone6: hsl(var(--H) var(--shade6-s) 70%);\n --grn-color-shadeTone5: hsl(var(--H) var(--shade5-s) 82%);\n --grn-color-shadeTone4: hsl(var(--H) var(--shade4-s) 90%);\n --grn-color-shadeTone3: hsl(var(--H) var(--shade3-s) 95%);\n --grn-color-shadeTone2: hsl(var(--H) var(--shade2-s) 97.5%);\n --grn-color-shadeTone1: hsl(var(--H) var(--shade1-s) 100%);\n\n --fade10-a: 73%;\n --fade9-a: 66%;\n --fade8-a: 59%;\n --fade7-a: 52%;\n --fade6-a: 45%;\n --fade5-a: 38%;\n --fade4-a: 31%;\n --fade3-a: 24%;\n --fade2-a: 17%;\n --fade1-a: 10%;\n\n --fade-s: 20%;\n\n --grn-color-lightFade10: hsl(var(--H) var(--fade-s) var(--wfS) / var(--fade10-a));\n --grn-color-lightFade9: hsl(var(--H) var(--fade-s) var(--wfS) / var(--fade9-a));\n --grn-color-lightFade8: hsl(var(--H) var(--fade-s) var(--wfS) / var(--fade8-a));\n --grn-color-lightFade7: hsl(var(--H) var(--fade-s) var(--wfS) / var(--fade7-a));\n --grn-color-lightFade6: hsl(var(--H) var(--fade-s) var(--wfS) / var(--fade6-a));\n --grn-color-lightFade5: hsl(var(--H) var(--fade-s) var(--wfS) / var(--fade5-a));\n --grn-color-lightFade4: hsl(var(--H) var(--fade-s) var(--wfS) / var(--fade4-a));\n --grn-color-lightFade3: hsl(var(--H) var(--fade-s) var(--wfS) / var(--fade3-a));\n --grn-color-lightFade2: hsl(var(--H) var(--fade-s) var(--wfS) / var(--fade2-a));\n --grn-color-lightFade1: hsl(var(--H) var(--fade-s) var(--wfS) / var(--fade1-a));\n\n --grn-color-darkFade10: hsl(var(--H) var(--fade-s) var(--bfS) / var(--fade10-a));\n --grn-color-darkFade9: hsl(var(--H) var(--fade-s) var(--bfS) / var(--fade9-a));\n --grn-color-darkFade8: hsl(var(--H) var(--fade-s) var(--bfS) / var(--fade8-a));\n --grn-color-darkFade7: hsl(var(--H) var(--fade-s) var(--bfS) / var(--fade7-a));\n --grn-color-darkFade6: hsl(var(--H) var(--fade-s) var(--bfS) / var(--fade6-a));\n --grn-color-darkFade5: hsl(var(--H) var(--fade-s) var(--bfS) / var(--fade5-a));\n --grn-color-darkFade4: hsl(var(--H) var(--fade-s) var(--bfS) / var(--fade4-a));\n --grn-color-darkFade3: hsl(var(--H) var(--fade-s) var(--bfS) / var(--fade3-a));\n --grn-color-darkFade2: hsl(var(--H) var(--fade-s) var(--bfS) / var(--fade2-a));\n --grn-color-darkFade1: hsl(var(--H) var(--fade-s) var(--bfS) / var(--fade1-a));\n }\n\n :root {\n --grn-color-warning: var(--grn-color-yellow);\n --grn-color-danger: var(--grn-color-red);\n --grn-color-success: var(--grn-color-green);\n --grn-color-selection: var(--grn-color-blue);\n }\n";
2
+ export default core;
@@ -0,0 +1,2 @@
1
+ var experimental = "\n [data-experimental='true'] {\n --grn-radius-button: 1000px;\n }\n";
2
+ export default experimental;
@@ -0,0 +1,4 @@
1
+ import core from './core';
2
+ import theme from './theme';
3
+ import experimental from './experimental';
4
+ export default [core, theme, experimental].join('\n');
@@ -0,0 +1,2 @@
1
+ var theme = "\n /* light */\n\n :root,\n [data-theme='light'],\n [data-theme='dark'] [data-theme='invert'] {\n --grn-color-fade10: var(--grn-color-darkFade10);\n --grn-color-fade9: var(--grn-color-darkFade9);\n --grn-color-fade8: var(--grn-color-darkFade8);\n --grn-color-fade7: var(--grn-color-darkFade7);\n --grn-color-fade6: var(--grn-color-darkFade6);\n --grn-color-fade5: var(--grn-color-darkFade5);\n --grn-color-fade4: var(--grn-color-darkFade4);\n --grn-color-fade3: var(--grn-color-darkFade3);\n --grn-color-fade2: var(--grn-color-darkFade2);\n --grn-color-fade1: var(--grn-color-darkFade1);\n\n --grn-color-shade1: var(--grn-color-shadeTone1);\n --grn-color-shade2: var(--grn-color-shadeTone2);\n --grn-color-shade3: var(--grn-color-shadeTone3);\n --grn-color-shade4: var(--grn-color-shadeTone4);\n --grn-color-shade5: var(--grn-color-shadeTone5);\n --grn-color-shade6: var(--grn-color-shadeTone6);\n --grn-color-shade7: var(--grn-color-shadeTone7);\n --grn-color-shade8: var(--grn-color-shadeTone8);\n --grn-color-shade9: var(--grn-color-shadeTone9);\n --grn-color-shade10: var(--grn-color-shadeTone10);\n --grn-color-shade11: var(--grn-color-shadeTone11);\n --grn-color-shade12: var(--grn-color-shadeTone12);\n --grn-color-shade13: var(--grn-color-shadeTone13);\n }\n\n /* dark */\n\n [data-theme='dark'],\n [data-theme='light'] [data-theme='invert'] {\n --grn-color-fade10: var(--grn-color-lightFade10);\n --grn-color-fade9: var(--grn-color-lightFade9);\n --grn-color-fade8: var(--grn-color-lightFade8);\n --grn-color-fade7: var(--grn-color-lightFade7);\n --grn-color-fade6: var(--grn-color-lightFade6);\n --grn-color-fade5: var(--grn-color-lightFade5);\n --grn-color-fade4: var(--grn-color-lightFade4);\n --grn-color-fade3: var(--grn-color-lightFade3);\n --grn-color-fade2: var(--grn-color-lightFade2);\n --grn-color-fade1: var(--grn-color-lightFade1);\n\n --grn-color-shade1: var(--grn-color-shadeTone13);\n --grn-color-shade2: var(--grn-color-shadeTone12);\n --grn-color-shade3: var(--grn-color-shadeTone11);\n --grn-color-shade4: var(--grn-color-shadeTone10);\n --grn-color-shade5: var(--grn-color-shadeTone9);\n --grn-color-shade6: var(--grn-color-shadeTone8);\n --grn-color-shade7: var(--grn-color-shadeTone7);\n --grn-color-shade8: var(--grn-color-shadeTone6);\n --grn-color-shade9: var(--grn-color-shadeTone5);\n --grn-color-shade10: var(--grn-color-shadeTone4);\n --grn-color-shade11: var(--grn-color-shadeTone3);\n --grn-color-shade12: var(--grn-color-shadeTone2);\n --grn-color-shade13: var(--grn-color-shadeTone1);\n }\n\n /* light */\n\n :root,\n [data-theme='light'],\n [data-theme='dark'] [data-theme='invert'] {\n --contentL: 20%;\n --backgroundL: 80%;\n --grn-color-floatingBackground: var(--grn-color-shade1);\n --grn-color-floatingBackground: var(--grn-color-shade1);\n }\n\n /* dark */\n\n [data-theme='dark'],\n [data-theme='light'] [data-theme='invert'] {\n --contentL: 80%;\n --backgroundL: 20%;\n --grn-color-floatingBackground: var(--grn-color-shade2);\n --grn-color-floatingBackground: var(--grn-color-shade2);\n }\n\n /* light + dark */\n\n :root,\n [data-theme] {\n --grn-color-content: var(--grn-color-shade12);\n --grn-color-content2: var(--grn-color-fade7);\n --grn-color-content3: var(--grn-color-fade5);\n --grn-color-disabledContent: var(--grn-color-shade7);\n --grn-color-icon: var(--grn-color-fade7);\n --grn-color-disabledIcon: var(--grn-color-fade4);\n\n --grn-color-background: var(--grn-color-shade1);\n --grn-color-background2: var(--grn-color-shade2);\n --grn-color-background3: var(--grn-color-shade3);\n --grn-color-disabledBackground: var(--grn-color-shade4);\n\n --grn-color-border: hsl(var(--HS) var(--contentL) / 12%);\n --grn-color-border2: hsl(var(--HS) var(--contentL) / 20%);\n }\n";
2
+ export default theme;
@@ -0,0 +1,6 @@
1
+ import variables from './variables';
2
+ import colors from './colors';
3
+ import shadows from './shadows';
4
+ import base from './base';
5
+ import utilities from './utilities';
6
+ export default [variables, colors, shadows, base, utilities].join('\n');
@@ -0,0 +1,2 @@
1
+ var shadows = "\n :root,\n [data-theme='light'],\n [data-theme='dark'] [data-theme='invert'] {\n --alphaRatio: 0.6;\n }\n\n [data-theme='dark'],\n [data-theme='light'] [data-theme='invert'] {\n --alphaRatio: 0.8;\n }\n\n :root,\n [data-theme] {\n --c: 0 0% 0%;\n --blurRatio: 1.7;\n --yRatio: 1.1;\n --spreadRatio: 2;\n --ratioCurve: 0.9;\n\n --rc1: var(--ratioCurve) * 1;\n --rc2: var(--ratioCurve) * 2;\n --rc3: var(--ratioCurve) * 3;\n --rc4: var(--ratioCurve) * 4;\n\n --b1: 1px;\n --b2: calc(var(--b1) * var(--rc2) * var(--blurRatio));\n --b3: calc(var(--b2) * var(--rc3) * var(--blurRatio));\n --b4: calc(var(--b3) * var(--rc4) * var(--blurRatio));\n\n --y1: 1px;\n --y2: calc(var(--y1) * var(--rc2) * var(--yRatio));\n --y3: calc(var(--y2) * var(--rc3) * var(--yRatio));\n --y4: calc(var(--y3) * var(--rc4) * var(--yRatio));\n\n --a1: 5%;\n --a2: calc(var(--a1) * var(--rc2) * var(--alphaRatio));\n --a3: calc(var(--a2) * var(--rc3) * var(--alphaRatio));\n --a4: calc(var(--a3) * var(--rc4) * var(--alphaRatio));\n\n --s1: -0.1px;\n --s2: calc(var(--s1) * var(--rc2) * var(--spreadRatio));\n --s3: calc(var(--s2) * var(--rc3) * var(--spreadRatio));\n --s4: calc(var(--s3) * var(--rc4) * var(--spreadRatio));\n\n --shadow1: 0 var(--y1) var(--b1) var(--s1) hsl(var(--c) / var(--a1));\n --shadow2: 0 var(--y2) var(--b2) var(--s2) hsl(var(--c) / var(--a2));\n --shadow3: 0 var(--y3) var(--b3) var(--s3) hsl(var(--c) / var(--a3));\n --shadow4: 0 var(--y4) var(--b4) var(--s4) hsl(var(--c) / var(--a4));\n\n --grn-shadow-s: var(--shadow1), var(--shadow2);\n\n --grn-shadow-m: var(--grn-shadow-s), var(--shadow3);\n\n --grn-shadow-l: var(--grn-shadow-m), var(--shadow4);\n }\n";
2
+ export default shadows;
@@ -0,0 +1,108 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+
3
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
+
5
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
+
7
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
8
+
9
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
10
+
11
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
+
13
+ import "core-js/modules/es.object.to-string.js";
14
+ import "core-js/modules/web.dom-collections.for-each.js";
15
+ import "core-js/modules/es.array.includes.js";
16
+ import "core-js/modules/es.string.includes.js";
17
+ import "core-js/modules/es.array.concat.js";
18
+ import "core-js/modules/es.object.entries.js";
19
+ import "core-js/modules/es.symbol.js";
20
+ import "core-js/modules/es.symbol.description.js";
21
+ import "core-js/modules/es.symbol.iterator.js";
22
+ import "core-js/modules/es.array.iterator.js";
23
+ import "core-js/modules/es.string.iterator.js";
24
+ import "core-js/modules/web.dom-collections.iterator.js";
25
+ import "core-js/modules/es.array.slice.js";
26
+ import "core-js/modules/es.array.from.js";
27
+ import "core-js/modules/es.regexp.exec.js";
28
+ import { styleConfig } from '../utilities';
29
+ import { propNameToShort } from '../utilities/style-config';
30
+ import { breakpoints, deviceShort } from '../variables';
31
+
32
+ var generateUtilityClassDeclarations = function generateUtilityClassDeclarations(propertySets) {
33
+ var css = '';
34
+ propertySets.forEach(function (set) {
35
+ set.variables.forEach(function (variable) {
36
+ set.props.forEach(function (prop) {
37
+ var property = prop.property;
38
+ var cssValue = set.valueTransformer ? set.valueTransformer(variable) : variable;
39
+ var hasHover = prop.propName.includes('Hover');
40
+ var selector = ".".concat(propNameToShort(prop.propName), "-").concat(variable);
41
+ var declaration = "{".concat(property, ": ").concat(cssValue, "}");
42
+ if (!hasHover) css += "".concat(selector, " ").concat(declaration);
43
+ if (hasHover) css += "".concat(selector, ":hover ").concat(declaration);
44
+ });
45
+ });
46
+ });
47
+ return css;
48
+ };
49
+
50
+ var generateStyleClassDeclarations = function generateStyleClassDeclarations(propertySets) {
51
+ var css = '';
52
+ propertySets.forEach(function (set) {
53
+ set.props.forEach(function (prop) {
54
+ var property = prop.property;
55
+ var propName = prop.propName;
56
+ var cssVar = "--".concat(propNameToShort(propName));
57
+ var hasHover = prop.propName.includes('Hover');
58
+ var declaration = "{".concat(property, ": var(").concat(cssVar, ")}");
59
+ if (!hasHover) css += "[style*=\"".concat(cssVar, ":\"] ").concat(declaration);
60
+ if (hasHover) css += "[style*=\"".concat(cssVar, ":\"]:hover ").concat(declaration);
61
+
62
+ if (set.isResponsive) {
63
+ var device = deviceShort.default;
64
+ css += "\n [style*=\"".concat(cssVar, "-").concat(device, "\"] {").concat(property, ": var(").concat(cssVar, "-").concat(device, ")}\n ");
65
+ Object.entries(breakpoints).forEach(function (_ref) {
66
+ var _ref2 = _slicedToArray(_ref, 2),
67
+ deviceName = _ref2[0],
68
+ screenSize = _ref2[1];
69
+
70
+ var device = deviceShort[deviceName];
71
+ css += "\n @media (max-width: ".concat(screenSize, "px) {\n [style*=\"").concat(cssVar, "-").concat(device, "\"] {").concat(property, ": var(").concat(cssVar, "-").concat(device, ")}\n }\n ");
72
+ });
73
+ }
74
+ });
75
+ });
76
+ return css;
77
+ };
78
+
79
+ var spaceProps = styleConfig.spaceProps,
80
+ colorProps = styleConfig.colorProps,
81
+ shadowProps = styleConfig.shadowProps,
82
+ radiusProps = styleConfig.radiusProps,
83
+ positionProps = styleConfig.positionProps,
84
+ overflowProps = styleConfig.overflowProps,
85
+ transitionProps = styleConfig.transitionProps,
86
+ cursorProps = styleConfig.cursorProps,
87
+ dimensionProps = styleConfig.dimensionProps,
88
+ aspectRatioProps = styleConfig.aspectRatioProps,
89
+ orderProps = styleConfig.orderProps,
90
+ flexProps = styleConfig.flexProps,
91
+ sizeProps = styleConfig.sizeProps,
92
+ opacityProps = styleConfig.opacityProps,
93
+ alignSelfProps = styleConfig.alignSelfProps,
94
+ borderColorProps = styleConfig.borderColorProps,
95
+ borderWidthProps = styleConfig.borderWidthProps,
96
+ borderSideProps = styleConfig.borderSideProps,
97
+ alignProps = styleConfig.alignProps,
98
+ weightProps = styleConfig.weightProps,
99
+ textDisplayProps = styleConfig.textDisplayProps,
100
+ zIndexProps = styleConfig.zIndexProps,
101
+ letterSpacingProps = styleConfig.letterSpacingProps,
102
+ textTransformProps = styleConfig.textTransformProps;
103
+ var classAndStyleDeclarationProps = [spaceProps, colorProps, shadowProps, radiusProps, transitionProps, sizeProps, borderColorProps, alignProps];
104
+ var classDeclarationProps = [].concat(classAndStyleDeclarationProps, [positionProps, overflowProps, cursorProps, sizeProps, alignSelfProps, borderWidthProps, weightProps, textDisplayProps, borderSideProps, textTransformProps]);
105
+ var styleDeclarationProps = [].concat(classAndStyleDeclarationProps, [dimensionProps, aspectRatioProps, orderProps, flexProps, opacityProps, zIndexProps, letterSpacingProps]);
106
+ var defaultBorder = "\n [class*=\"bd\"] {\n border-color: var(--grn-color-border);\n border-width: 1px;\n }\n";
107
+ var utilities = "\n ".concat(defaultBorder, "\n ").concat(generateUtilityClassDeclarations(classDeclarationProps), ";\n ").concat(generateStyleClassDeclarations(styleDeclarationProps), ";\n");
108
+ export default utilities;
@@ -0,0 +1,2 @@
1
+ var variables = "\n :root {\n --grn-unit: 8px;\n }\n\n :root {\n --grn-text-s: 12px;\n --grn-text-m: 14px;\n --grn-text-l: 18px;\n --grn-text-xl: 24px;\n --grn-text-xxl: 30px;\n }\n\n /* text size \u2715 ~1.2 */\n :root {\n --grn-icon-s: 14px;\n --grn-icon-m: 18px;\n --grn-icon-l: 22px;\n --grn-icon-xl: 28px;\n --grn-icon-xxl: 36px;\n }\n\n :root {\n --grn-weight-normal: 400;\n --grn-weight-medium: 500;\n }\n\n :root {\n --grn-space-xs: calc(var(--grn-unit) / 2);\n --grn-space-s: calc(var(--grn-unit) * 1);\n --grn-space-s2: calc(var(--grn-unit) * 1.5);\n --grn-space-m: calc(var(--grn-unit) * 2);\n --grn-space-l: calc(var(--grn-unit) * 3);\n --grn-space-l2: calc(var(--grn-unit) * 4);\n --grn-space-xl: calc(var(--grn-unit) * 5);\n --grn-space-xl2: calc(var(--grn-unit) * 6);\n --grn-space-xxl: calc(var(--grn-unit) * 7);\n }\n\n :root {\n --grn-radius-s: 3px;\n --grn-radius-m: 6px;\n --grn-radius-l: 10px;\n }\n\n :root {\n --grn-transition-slow: 400ms;\n --grn-transition-fast: 200ms;\n --grn-transition-xFast: 160ms;\n --grn-transition-xxFast: 80ms;\n }\n\n :root,\n [data-theme] {\n --grn-space-betweenFormTitleAndContent: var(--grn-space-l);\n --grn-space-betweenFormContents: var(--grn-space-m);\n --grn-space-betweenFormContentAndActions: var(--grn-space-xl);\n --grn-space-betweenFormControlAndLabel: var(--grn-space-s);\n --grn-space-fieldPaddingX: 12px;\n\n --grn-color-fieldBorder: var(--grn-color-fade3);\n --grn-color-fieldBorderHover: var(--grn-color-fade6);\n --grn-color-fieldBorderFocus: var(--grn-color-shade9);\n --grn-color-fieldBorderDisabled: var(--grn-color-shade5);\n --grn-color-fieldBackgroundDisabled: var(--grn-color-shade2);\n --grn-color-backdrop: hsl(var(--H) 15% 10% / 0.6);\n\n --grn-transition-leave: var(--grn-transition-slow);\n --grn-transition-hover: var(--grn-transition-fast);\n --grn-transition-active: var(--grn-transition-xxFast);\n }\n";
2
+ export default variables;
package/es/types.js CHANGED
@@ -17,22 +17,32 @@ export var autoFlows = directions;
17
17
  export var flexDirections = directions;
18
18
  export var alignSelfs = [].concat(axisAlignments, ['baseline']);
19
19
  export var flexWraps = ['nowrap', 'wrap', 'wrap-reverse'];
20
+ export var overflows = ['visible', 'hidden', 'scroll', 'auto'];
21
+ export var positions = ['static', 'relative', 'fixed', 'absolute', 'sticky'];
22
+ export var cursors = ['default', 'pointer'];
23
+ export var sides = ['all', 'left', 'right', 'top', 'bottom', 'x', 'y'];
24
+ export var borderWidths = ['1px', '2px', '3px', '4px'];
25
+ export var textTransforms = ['capitalize', 'uppercase', 'lowercase'];
26
+ export var textDisplays = ['block', 'inline-block', 'inline'];
27
+ export var textAlignments = ['left', 'center', 'right'];
28
+ export var spaces = Object.keys(vars.spaces);
20
29
  export var types = {
30
+ spaces: PropTypes.oneOf(spaces),
21
31
  color: PropTypes.oneOfType([PropTypes.oneOf(Object.keys(vars.colors)), PropTypes.string]),
22
- responsiveSpace: PropTypes.oneOfType([PropTypes.oneOf(Object.keys(vars.spaces)), PropTypes.number, PropTypes.string, PropTypes.object]),
32
+ responsiveSpace: PropTypes.oneOfType([PropTypes.oneOf(spaces), PropTypes.number, PropTypes.string, PropTypes.object]),
23
33
  dimension: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
24
34
  responsiveDimension: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.object]),
25
- side: PropTypes.oneOf(['all', 'left', 'right', 'top', 'bottom', 'x', 'y']),
35
+ side: PropTypes.oneOf(sides),
26
36
  radius: PropTypes.oneOfType([PropTypes.oneOf(Object.keys(vars.radii)), PropTypes.string, PropTypes.number]),
27
37
  shadow: PropTypes.oneOfType([PropTypes.oneOf(Object.keys(vars.shadows)), PropTypes.string]),
28
- position: PropTypes.oneOf(['static', 'relative', 'fixed', 'absolute', 'sticky']),
38
+ position: PropTypes.oneOf(positions),
29
39
  responsiveTextSize: PropTypes.oneOfType([PropTypes.oneOf(Object.keys(vars.texts)), PropTypes.string, PropTypes.object]),
30
- responsiveTextAlign: PropTypes.oneOfType([PropTypes.oneOf(['left', 'center', 'right']), PropTypes.string, PropTypes.object]),
40
+ responsiveTextAlign: PropTypes.oneOfType([PropTypes.oneOf(textAlignments), PropTypes.string, PropTypes.object]),
31
41
  iconSize: PropTypes.oneOfType([PropTypes.oneOf(Object.keys(vars.icons)), PropTypes.number, PropTypes.string]),
32
42
  weight: PropTypes.oneOf(Object.keys(vars.weights)),
33
- overflow: PropTypes.oneOf(['visible', 'hidden', 'scroll', 'auto']),
43
+ overflow: PropTypes.oneOf(overflows),
34
44
  textTag: PropTypes.oneOf(['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'span', 'label']),
35
- textDisplay: PropTypes.oneOf(['block', 'inline-block', 'inline']),
45
+ textDisplay: PropTypes.oneOf(textDisplays),
36
46
  responsiveColumns: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
37
47
  responsiveRows: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
38
48
  autoFlow: PropTypes.oneOfType([PropTypes.oneOf(autoFlows), PropTypes.string, PropTypes.object]),
@@ -57,7 +67,8 @@ export var types = {
57
67
  buttonTag: PropTypes.oneOf(['button', 'a', 'span']),
58
68
  hint: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
59
69
  transition: PropTypes.oneOfType([PropTypes.oneOf(Object.keys(vars.transitions)), PropTypes.string]),
60
- cursor: PropTypes.oneOf(['default', 'pointer'])
70
+ cursor: PropTypes.oneOf(cursors),
71
+ borderWidth: PropTypes.oneOf(borderWidths)
61
72
  };
62
73
  export var defaultProps = {
63
74
  menuMaxHeight: '468px',
@@ -0,0 +1,66 @@
1
+ import "core-js/modules/es.object.values.js";
2
+ import "core-js/modules/es.object.to-string.js";
3
+ import "core-js/modules/web.dom-collections.for-each.js";
4
+ import "core-js/modules/es.array.concat.js";
5
+ import "core-js/modules/es.object.keys.js";
6
+ import { breakpoints, deviceShort } from '../variables';
7
+ import { isObject } from './helpers';
8
+ import { propNameToShort, styleConfig } from './style-config';
9
+ var mediaQueries = {
10
+ tablet: "@media (max-width: ".concat(breakpoints.tablet, "px)"),
11
+ mobile: "@media (max-width: ".concat(breakpoints.mobile, "px)")
12
+ };
13
+ export var generateStyleAttributes = function generateStyleAttributes(props) {
14
+ var styles = {};
15
+ var styleConfigValues = Object.values(styleConfig);
16
+ styleConfigValues.forEach(function (propsSet) {
17
+ propsSet.props.forEach(function (_ref) {
18
+ var propName = _ref.propName;
19
+ var value = props[propName];
20
+ var hasVariable = propsSet.variableChecker ? propsSet.variableChecker(value) : false;
21
+ var hasTransformer = propsSet.valueTransformer ? true : false;
22
+ if (hasVariable) return;
23
+ if (value === null || value === undefined || value === '') return;
24
+ var cssValue = hasTransformer ? propsSet.valueTransformer(value) : value;
25
+ var propNameShort = propNameToShort(propName);
26
+
27
+ if (!isObject(value)) {
28
+ styles["--".concat(propNameShort)] = cssValue;
29
+ } else {
30
+ var def = value.default,
31
+ mobile = value.mobile,
32
+ tablet = value.tablet; // accept fixed string media queries to help migration
33
+
34
+ var mobileMediaValue = value[mediaQueries.mobile];
35
+ var tabletMediaValue = value[mediaQueries.tablet];
36
+ var mob = mobileMediaValue || mobile;
37
+ var tab = tabletMediaValue || tablet;
38
+ styles["--".concat(propNameShort, "-").concat(deviceShort.default)] = hasTransformer ? propsSet.valueTransformer(def) : def;
39
+ styles["--".concat(propNameShort, "-").concat(deviceShort.mobile)] = hasTransformer ? propsSet.valueTransformer(mob) : mob;
40
+ styles["--".concat(propNameShort, "-").concat(deviceShort.tablet)] = hasTransformer ? propsSet.valueTransformer(tab) : tab;
41
+ }
42
+ });
43
+ });
44
+ return styles;
45
+ };
46
+ export var generateClassNameAttributes = function generateClassNameAttributes(props) {
47
+ var classNames = [];
48
+ var propKeys = Object.keys(props);
49
+ var styleConfigValues = Object.values(styleConfig);
50
+ propKeys.forEach(function (prop) {
51
+ styleConfigValues.forEach(function (styleConfigItem) {
52
+ styleConfigItem.props.forEach(function (propItem) {
53
+ if (propItem.propName === prop) {
54
+ var propName = propItem.propName;
55
+ var value = props[propName];
56
+ var hasVariable = styleConfigItem.variableChecker ? styleConfigItem.variableChecker(value) : false;
57
+ if (!hasVariable) return;
58
+ if (value === null || value === undefined || value === '') return;
59
+ var className = "".concat(propNameToShort(propName), "-").concat(value);
60
+ classNames.push(className);
61
+ }
62
+ });
63
+ });
64
+ });
65
+ return classNames.join(' ');
66
+ };
@@ -1,9 +1,10 @@
1
1
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
2
 
3
3
  import "core-js/modules/es.array.concat.js";
4
+ import "core-js/modules/es.object.to-string.js";
5
+ import "core-js/modules/web.dom-collections.for-each.js";
4
6
  import "core-js/modules/es.symbol.js";
5
7
  import "core-js/modules/es.symbol.description.js";
6
- import "core-js/modules/es.object.to-string.js";
7
8
  import "core-js/modules/es.symbol.iterator.js";
8
9
  import "core-js/modules/es.array.iterator.js";
9
10
  import "core-js/modules/es.string.iterator.js";
@@ -32,4 +33,15 @@ export var isArray = function isArray(value) {
32
33
  };
33
34
  export var isObject = function isObject(value) {
34
35
  return _typeof(value) === 'object';
36
+ };
37
+ export var mergeRefs = function mergeRefs(refs) {
38
+ return function (value) {
39
+ refs.forEach(function (ref) {
40
+ if (typeof ref === 'function') {
41
+ ref(value);
42
+ } else if (ref != null) {
43
+ ref.current = value;
44
+ }
45
+ });
46
+ };
35
47
  };
@@ -1,3 +1,5 @@
1
1
  export * from './helpers';
2
2
  export * from './responsive';
3
- export * from './styles';
3
+ export * from './styles';
4
+ export * from './style-config';
5
+ export * from './attributes';
@@ -61,6 +61,9 @@ export var getDimension = function getDimension(dimension) {
61
61
  if (isString(dimension)) return dimension;
62
62
  if (isNumber(dimension)) return u(dimension);
63
63
  };
64
+ export var isSpaceVar = function isSpaceVar(space) {
65
+ return space in vars.spaces || space in vars.spaceUtils;
66
+ };
64
67
  export var getSpace = function getSpace(space) {
65
68
  if (space in vars.spaceUtils) {
66
69
  return getCssVar(varInfo.spaceUtils.name, space);