@novi-ui/flatlay 0.1.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.
- package/README.md +418 -0
- package/dist/accordion/accordion.d.mts +35 -0
- package/dist/accordion/accordion.d.mts.map +1 -0
- package/dist/accordion/accordion.mjs +74 -0
- package/dist/accordion/accordion.mjs.map +1 -0
- package/dist/accordion/accordion.styles.d.mts +61 -0
- package/dist/accordion/accordion.styles.d.mts.map +1 -0
- package/dist/accordion/accordion.styles.mjs +91 -0
- package/dist/accordion/accordion.styles.mjs.map +1 -0
- package/dist/accordion/index.d.mts +3 -0
- package/dist/avatar/avatar.d.mts +22 -0
- package/dist/avatar/avatar.d.mts.map +1 -0
- package/dist/avatar/avatar.mjs +60 -0
- package/dist/avatar/avatar.mjs.map +1 -0
- package/dist/avatar/avatar.styles.d.mts +49 -0
- package/dist/avatar/avatar.styles.d.mts.map +1 -0
- package/dist/avatar/avatar.styles.mjs +55 -0
- package/dist/avatar/avatar.styles.mjs.map +1 -0
- package/dist/avatar/index.d.mts +3 -0
- package/dist/badge/badge.d.mts +15 -0
- package/dist/badge/badge.d.mts.map +1 -0
- package/dist/badge/badge.mjs +39 -0
- package/dist/badge/badge.mjs.map +1 -0
- package/dist/badge/badge.styles.d.mts +67 -0
- package/dist/badge/badge.styles.d.mts.map +1 -0
- package/dist/badge/badge.styles.mjs +110 -0
- package/dist/badge/badge.styles.mjs.map +1 -0
- package/dist/badge/index.d.mts +3 -0
- package/dist/breadcrumbs/breadcrumbs.d.mts +36 -0
- package/dist/breadcrumbs/breadcrumbs.d.mts.map +1 -0
- package/dist/breadcrumbs/breadcrumbs.mjs +82 -0
- package/dist/breadcrumbs/breadcrumbs.mjs.map +1 -0
- package/dist/breadcrumbs/breadcrumbs.styles.d.mts +46 -0
- package/dist/breadcrumbs/breadcrumbs.styles.d.mts.map +1 -0
- package/dist/breadcrumbs/breadcrumbs.styles.mjs +45 -0
- package/dist/breadcrumbs/breadcrumbs.styles.mjs.map +1 -0
- package/dist/breadcrumbs/index.d.mts +3 -0
- package/dist/button/button.d.mts +18 -0
- package/dist/button/button.d.mts.map +1 -0
- package/dist/button/button.mjs +79 -0
- package/dist/button/button.mjs.map +1 -0
- package/dist/button/button.styles.d.mts +82 -0
- package/dist/button/button.styles.d.mts.map +1 -0
- package/dist/button/button.styles.mjs +137 -0
- package/dist/button/button.styles.mjs.map +1 -0
- package/dist/button/index.d.mts +3 -0
- package/dist/card/card.d.mts +51 -0
- package/dist/card/card.d.mts.map +1 -0
- package/dist/card/card.mjs +96 -0
- package/dist/card/card.mjs.map +1 -0
- package/dist/card/card.styles.d.mts +73 -0
- package/dist/card/card.styles.d.mts.map +1 -0
- package/dist/card/card.styles.mjs +72 -0
- package/dist/card/card.styles.mjs.map +1 -0
- package/dist/card/index.d.mts +3 -0
- package/dist/checkbox/checkbox.d.mts +27 -0
- package/dist/checkbox/checkbox.d.mts.map +1 -0
- package/dist/checkbox/checkbox.mjs +109 -0
- package/dist/checkbox/checkbox.mjs.map +1 -0
- package/dist/checkbox/checkbox.styles.d.mts +114 -0
- package/dist/checkbox/checkbox.styles.d.mts.map +1 -0
- package/dist/checkbox/checkbox.styles.mjs +105 -0
- package/dist/checkbox/checkbox.styles.mjs.map +1 -0
- package/dist/checkbox/index.d.mts +3 -0
- package/dist/color-picker/color-picker.d.mts +30 -0
- package/dist/color-picker/color-picker.d.mts.map +1 -0
- package/dist/color-picker/color-picker.mjs +100 -0
- package/dist/color-picker/color-picker.mjs.map +1 -0
- package/dist/color-picker/color-picker.styles.d.mts +91 -0
- package/dist/color-picker/color-picker.styles.d.mts.map +1 -0
- package/dist/color-picker/color-picker.styles.mjs +79 -0
- package/dist/color-picker/color-picker.styles.mjs.map +1 -0
- package/dist/color-picker/index.d.mts +3 -0
- package/dist/flatlay.css +381 -0
- package/dist/flatlay.scoped.css +381 -0
- package/dist/index.d.mts +67 -0
- package/dist/index.mjs +46 -0
- package/dist/input/index.d.mts +3 -0
- package/dist/input/input.d.mts +23 -0
- package/dist/input/input.d.mts.map +1 -0
- package/dist/input/input.mjs +89 -0
- package/dist/input/input.mjs.map +1 -0
- package/dist/input/input.styles.d.mts +97 -0
- package/dist/input/input.styles.d.mts.map +1 -0
- package/dist/input/input.styles.mjs +96 -0
- package/dist/input/input.styles.mjs.map +1 -0
- package/dist/menu/index.d.mts +3 -0
- package/dist/menu/menu.d.mts +66 -0
- package/dist/menu/menu.d.mts.map +1 -0
- package/dist/menu/menu.mjs +118 -0
- package/dist/menu/menu.mjs.map +1 -0
- package/dist/menu/menu.styles.d.mts +114 -0
- package/dist/menu/menu.styles.d.mts.map +1 -0
- package/dist/menu/menu.styles.mjs +66 -0
- package/dist/menu/menu.styles.mjs.map +1 -0
- package/dist/modal/index.d.mts +3 -0
- package/dist/modal/modal.d.mts +55 -0
- package/dist/modal/modal.d.mts.map +1 -0
- package/dist/modal/modal.mjs +120 -0
- package/dist/modal/modal.mjs.map +1 -0
- package/dist/modal/modal.styles.d.mts +70 -0
- package/dist/modal/modal.styles.d.mts.map +1 -0
- package/dist/modal/modal.styles.mjs +83 -0
- package/dist/modal/modal.styles.mjs.map +1 -0
- package/dist/popover/index.d.mts +3 -0
- package/dist/popover/popover.d.mts +33 -0
- package/dist/popover/popover.d.mts.map +1 -0
- package/dist/popover/popover.mjs +57 -0
- package/dist/popover/popover.mjs.map +1 -0
- package/dist/popover/popover.styles.d.mts +40 -0
- package/dist/popover/popover.styles.d.mts.map +1 -0
- package/dist/popover/popover.styles.mjs +47 -0
- package/dist/popover/popover.styles.mjs.map +1 -0
- package/dist/progress/index.d.mts +3 -0
- package/dist/progress/progress.d.mts +15 -0
- package/dist/progress/progress.d.mts.map +1 -0
- package/dist/progress/progress.mjs +55 -0
- package/dist/progress/progress.mjs.map +1 -0
- package/dist/progress/progress.styles.d.mts +100 -0
- package/dist/progress/progress.styles.d.mts.map +1 -0
- package/dist/progress/progress.styles.mjs +65 -0
- package/dist/progress/progress.styles.mjs.map +1 -0
- package/dist/radio/index.d.mts +3 -0
- package/dist/radio/radio.d.mts +25 -0
- package/dist/radio/radio.d.mts.map +1 -0
- package/dist/radio/radio.mjs +99 -0
- package/dist/radio/radio.mjs.map +1 -0
- package/dist/radio/radio.styles.d.mts +114 -0
- package/dist/radio/radio.styles.d.mts.map +1 -0
- package/dist/radio/radio.styles.mjs +103 -0
- package/dist/radio/radio.styles.mjs.map +1 -0
- package/dist/select/index.d.mts +3 -0
- package/dist/select/select.d.mts +40 -0
- package/dist/select/select.d.mts.map +1 -0
- package/dist/select/select.mjs +121 -0
- package/dist/select/select.mjs.map +1 -0
- package/dist/select/select.styles.d.mts +85 -0
- package/dist/select/select.styles.d.mts.map +1 -0
- package/dist/select/select.styles.mjs +111 -0
- package/dist/select/select.styles.mjs.map +1 -0
- package/dist/skeleton/index.d.mts +3 -0
- package/dist/skeleton/skeleton.d.mts +15 -0
- package/dist/skeleton/skeleton.d.mts.map +1 -0
- package/dist/skeleton/skeleton.mjs +26 -0
- package/dist/skeleton/skeleton.mjs.map +1 -0
- package/dist/skeleton/skeleton.styles.d.mts +47 -0
- package/dist/skeleton/skeleton.styles.d.mts.map +1 -0
- package/dist/skeleton/skeleton.styles.mjs +31 -0
- package/dist/skeleton/skeleton.styles.mjs.map +1 -0
- package/dist/spinner/index.d.mts +3 -0
- package/dist/spinner/spinner.d.mts +15 -0
- package/dist/spinner/spinner.d.mts.map +1 -0
- package/dist/spinner/spinner.mjs +55 -0
- package/dist/spinner/spinner.mjs.map +1 -0
- package/dist/spinner/spinner.styles.d.mts +46 -0
- package/dist/spinner/spinner.styles.d.mts.map +1 -0
- package/dist/spinner/spinner.styles.mjs +50 -0
- package/dist/spinner/spinner.styles.mjs.map +1 -0
- package/dist/styles/focus-ring.mjs +30 -0
- package/dist/styles/focus-ring.mjs.map +1 -0
- package/dist/styles/inflow.mjs +156 -0
- package/dist/styles/inflow.mjs.map +1 -0
- package/dist/styles/mono.mjs +24 -0
- package/dist/styles/mono.mjs.map +1 -0
- package/dist/switch/index.d.mts +3 -0
- package/dist/switch/switch.d.mts +18 -0
- package/dist/switch/switch.d.mts.map +1 -0
- package/dist/switch/switch.mjs +58 -0
- package/dist/switch/switch.mjs.map +1 -0
- package/dist/switch/switch.styles.d.mts +58 -0
- package/dist/switch/switch.styles.d.mts.map +1 -0
- package/dist/switch/switch.styles.mjs +86 -0
- package/dist/switch/switch.styles.mjs.map +1 -0
- package/dist/tabs/index.d.mts +3 -0
- package/dist/tabs/tabs.d.mts +64 -0
- package/dist/tabs/tabs.d.mts.map +1 -0
- package/dist/tabs/tabs.mjs +93 -0
- package/dist/tabs/tabs.mjs.map +1 -0
- package/dist/tabs/tabs.styles.d.mts +64 -0
- package/dist/tabs/tabs.styles.d.mts.map +1 -0
- package/dist/tabs/tabs.styles.mjs +118 -0
- package/dist/tabs/tabs.styles.mjs.map +1 -0
- package/dist/textarea/index.d.mts +3 -0
- package/dist/textarea/textarea.d.mts +15 -0
- package/dist/textarea/textarea.d.mts.map +1 -0
- package/dist/textarea/textarea.mjs +70 -0
- package/dist/textarea/textarea.mjs.map +1 -0
- package/dist/textarea/textarea.styles.d.mts +70 -0
- package/dist/textarea/textarea.styles.d.mts.map +1 -0
- package/dist/textarea/textarea.styles.mjs +85 -0
- package/dist/textarea/textarea.styles.mjs.map +1 -0
- package/dist/toast/index.d.mts +3 -0
- package/dist/toast/toast.d.mts +47 -0
- package/dist/toast/toast.d.mts.map +1 -0
- package/dist/toast/toast.mjs +100 -0
- package/dist/toast/toast.mjs.map +1 -0
- package/dist/toast/toast.styles.d.mts +61 -0
- package/dist/toast/toast.styles.d.mts.map +1 -0
- package/dist/toast/toast.styles.mjs +79 -0
- package/dist/toast/toast.styles.mjs.map +1 -0
- package/dist/tokens/color-set.mjs +124 -0
- package/dist/tokens/color-set.mjs.map +1 -0
- package/dist/tooltip/index.d.mts +3 -0
- package/dist/tooltip/tooltip.d.mts +20 -0
- package/dist/tooltip/tooltip.d.mts.map +1 -0
- package/dist/tooltip/tooltip.mjs +45 -0
- package/dist/tooltip/tooltip.mjs.map +1 -0
- package/dist/tooltip/tooltip.styles.d.mts +48 -0
- package/dist/tooltip/tooltip.styles.d.mts.map +1 -0
- package/dist/tooltip/tooltip.styles.mjs +39 -0
- package/dist/tooltip/tooltip.styles.mjs.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Checkbox, CheckboxGroup } from "./checkbox.mjs";
|
|
2
|
+
import { CheckboxGroupStyleProps, CheckboxStyleProps, checkboxGroupStyles, checkboxStyles } from "./checkbox.styles.mjs";
|
|
3
|
+
export { Checkbox, CheckboxGroup, type CheckboxGroupStyleProps, type CheckboxStyleProps, checkboxGroupStyles, checkboxStyles };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ColorPickerProps, NoviColorOption } from "@novi-ui/core";
|
|
2
|
+
//#region src/color-picker/color-picker.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Flatlay のカラーセット(Stationery)。**利用側が色値を書かなくてよい**ように既定で並ぶ。
|
|
5
|
+
*
|
|
6
|
+
* ここが `colors` prop の既定値になる。同じ `<ColorPicker />` でも
|
|
7
|
+
* Raster では Print Inks、Tactile では Textile Dyes が出る。色はモデルの持ち物で、共通ではない。
|
|
8
|
+
*
|
|
9
|
+
* **赤が無いのは欠落ではなく決定**。校正の朱書きはエラーの道具なので danger に予約している。
|
|
10
|
+
*/
|
|
11
|
+
declare const COLOR_OPTIONS: readonly NoviColorOption[];
|
|
12
|
+
/**
|
|
13
|
+
* テーマのカラーセットから1色を選ぶ。選んだ値を `data-novi-color` に渡すと配色が変わる。
|
|
14
|
+
*
|
|
15
|
+
* Flatlay では**方眼に貼った色見本**として並ぶ。升目の罫線が見本の枠を兼ね、
|
|
16
|
+
* 選ぶと升目の地が紙からインクに反転する。
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* // 色 id を書かない。未指定ならテーマの既定色(Fieldbook)から始まる
|
|
20
|
+
* const [color, setColor] = useState<string>()
|
|
21
|
+
* return (
|
|
22
|
+
* <div data-novi-color={color}>
|
|
23
|
+
* <ColorPicker label="配色" onChange={setColor} />
|
|
24
|
+
* </div>
|
|
25
|
+
* )
|
|
26
|
+
*/
|
|
27
|
+
declare function ColorPicker({ size, label, description, errorMessage, value, defaultValue, onChange, colors, showLabels, isDisabled, isReadOnly, isRequired, isInvalid, name, className, classNames, id }: ColorPickerProps): import("react").JSX.Element;
|
|
28
|
+
//#endregion
|
|
29
|
+
export { COLOR_OPTIONS, ColorPicker };
|
|
30
|
+
//# sourceMappingURL=color-picker.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-picker.d.mts","names":[],"sources":["../../src/color-picker/color-picker.tsx"],"mappings":";;;;;;;;;;cAqBa,wBAAwB;;;;;;;;;;;;;;;;iBAmBrB,cACd,MACA,OACA,aACA,cACA,OACA,cACA,UACA,QACA,YACA,YACA,YACA,YACA,WACA,MACA,WACA,YACA,MACC,mCAAgB,IAAA"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { DEFAULT_COLOR_ID, FLATLAY_COLOR_SET } from "../tokens/color-set.mjs";
|
|
3
|
+
import { colorPickerStyles } from "./color-picker.styles.mjs";
|
|
4
|
+
import { FieldError, Label, Radio, RadioGroup, Text } from "react-aria-components";
|
|
5
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/color-picker/color-picker.tsx
|
|
7
|
+
/**
|
|
8
|
+
* Flatlay のカラーセット(Stationery)。**利用側が色値を書かなくてよい**ように既定で並ぶ。
|
|
9
|
+
*
|
|
10
|
+
* ここが `colors` prop の既定値になる。同じ `<ColorPicker />` でも
|
|
11
|
+
* Raster では Print Inks、Tactile では Textile Dyes が出る。色はモデルの持ち物で、共通ではない。
|
|
12
|
+
*
|
|
13
|
+
* **赤が無いのは欠落ではなく決定**。校正の朱書きはエラーの道具なので danger に予約している。
|
|
14
|
+
*/
|
|
15
|
+
const COLOR_OPTIONS = FLATLAY_COLOR_SET.map(({ id, name, description }) => ({
|
|
16
|
+
id,
|
|
17
|
+
name,
|
|
18
|
+
description
|
|
19
|
+
}));
|
|
20
|
+
/**
|
|
21
|
+
* テーマのカラーセットから1色を選ぶ。選んだ値を `data-novi-color` に渡すと配色が変わる。
|
|
22
|
+
*
|
|
23
|
+
* Flatlay では**方眼に貼った色見本**として並ぶ。升目の罫線が見本の枠を兼ね、
|
|
24
|
+
* 選ぶと升目の地が紙からインクに反転する。
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* // 色 id を書かない。未指定ならテーマの既定色(Fieldbook)から始まる
|
|
28
|
+
* const [color, setColor] = useState<string>()
|
|
29
|
+
* return (
|
|
30
|
+
* <div data-novi-color={color}>
|
|
31
|
+
* <ColorPicker label="配色" onChange={setColor} />
|
|
32
|
+
* </div>
|
|
33
|
+
* )
|
|
34
|
+
*/
|
|
35
|
+
function ColorPicker({ size, label, description, errorMessage, value, defaultValue = DEFAULT_COLOR_ID, onChange, colors = COLOR_OPTIONS, showLabels = false, isDisabled, isReadOnly, isRequired, isInvalid, name, className, classNames, id }) {
|
|
36
|
+
const s = colorPickerStyles({ size });
|
|
37
|
+
return /* @__PURE__ */ jsxs(RadioGroup, {
|
|
38
|
+
id,
|
|
39
|
+
name,
|
|
40
|
+
value,
|
|
41
|
+
defaultValue,
|
|
42
|
+
onChange,
|
|
43
|
+
isDisabled,
|
|
44
|
+
isReadOnly,
|
|
45
|
+
isRequired,
|
|
46
|
+
isInvalid,
|
|
47
|
+
"data-slot": "root",
|
|
48
|
+
className: s.root({ class: [className, classNames?.root] }),
|
|
49
|
+
children: [
|
|
50
|
+
label !== void 0 && /* @__PURE__ */ jsx(Label, {
|
|
51
|
+
"data-slot": "label",
|
|
52
|
+
className: s.label({ class: classNames?.label }),
|
|
53
|
+
children: label
|
|
54
|
+
}),
|
|
55
|
+
/* @__PURE__ */ jsx("div", {
|
|
56
|
+
"data-slot": "list",
|
|
57
|
+
className: s.list({ class: classNames?.list }),
|
|
58
|
+
children: colors.map((color) => /* @__PURE__ */ jsx(Radio, {
|
|
59
|
+
value: color.id,
|
|
60
|
+
"aria-label": color.name,
|
|
61
|
+
"data-slot": "item",
|
|
62
|
+
className: `group ${s.item({ class: classNames?.item })}`,
|
|
63
|
+
children: ({ isSelected }) => /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
|
|
64
|
+
"data-slot": "swatch",
|
|
65
|
+
style: {
|
|
66
|
+
background: `var(--novi-swatch-${color.id})`,
|
|
67
|
+
color: `var(--novi-swatch-${color.id}-fg)`
|
|
68
|
+
},
|
|
69
|
+
className: s.swatch({ class: classNames?.swatch }),
|
|
70
|
+
children: isSelected && /* @__PURE__ */ jsx("span", {
|
|
71
|
+
"aria-hidden": "true",
|
|
72
|
+
"data-slot": "indicator",
|
|
73
|
+
className: s.indicator({ class: classNames?.indicator }),
|
|
74
|
+
children: "✓"
|
|
75
|
+
})
|
|
76
|
+
}), showLabels && /* @__PURE__ */ jsx("span", {
|
|
77
|
+
"data-slot": "itemLabel",
|
|
78
|
+
className: s.itemLabel({ class: classNames?.itemLabel }),
|
|
79
|
+
children: color.name
|
|
80
|
+
})] })
|
|
81
|
+
}, color.id))
|
|
82
|
+
}),
|
|
83
|
+
description !== void 0 && /* @__PURE__ */ jsx(Text, {
|
|
84
|
+
slot: "description",
|
|
85
|
+
"data-slot": "description",
|
|
86
|
+
className: s.description({ class: classNames?.description }),
|
|
87
|
+
children: description
|
|
88
|
+
}),
|
|
89
|
+
errorMessage !== void 0 && /* @__PURE__ */ jsx(FieldError, {
|
|
90
|
+
"data-slot": "errorMessage",
|
|
91
|
+
className: s.errorMessage({ class: classNames?.errorMessage }),
|
|
92
|
+
children: errorMessage
|
|
93
|
+
})
|
|
94
|
+
]
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
//#endregion
|
|
98
|
+
export { COLOR_OPTIONS, ColorPicker };
|
|
99
|
+
|
|
100
|
+
//# sourceMappingURL=color-picker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-picker.mjs","names":["RACRadioGroup","RACRadio"],"sources":["../../src/color-picker/color-picker.tsx"],"sourcesContent":["'use client'\n\nimport type { ColorPickerProps, NoviColorOption } from '@novi-ui/core'\nimport {\n FieldError,\n Label,\n Radio as RACRadio,\n RadioGroup as RACRadioGroup,\n Text,\n} from 'react-aria-components'\nimport { DEFAULT_COLOR_ID, FLATLAY_COLOR_SET } from '../tokens/color-set'\nimport { colorPickerStyles } from './color-picker.styles'\n\n/**\n * Flatlay のカラーセット(Stationery)。**利用側が色値を書かなくてよい**ように既定で並ぶ。\n *\n * ここが `colors` prop の既定値になる。同じ `<ColorPicker />` でも\n * Raster では Print Inks、Tactile では Textile Dyes が出る。色はモデルの持ち物で、共通ではない。\n *\n * **赤が無いのは欠落ではなく決定**。校正の朱書きはエラーの道具なので danger に予約している。\n */\nexport const COLOR_OPTIONS: readonly NoviColorOption[] = FLATLAY_COLOR_SET.map(\n ({ id, name, description }) => ({ id, name, description }),\n)\n\n/**\n * テーマのカラーセットから1色を選ぶ。選んだ値を `data-novi-color` に渡すと配色が変わる。\n *\n * Flatlay では**方眼に貼った色見本**として並ぶ。升目の罫線が見本の枠を兼ね、\n * 選ぶと升目の地が紙からインクに反転する。\n *\n * @example\n * // 色 id を書かない。未指定ならテーマの既定色(Fieldbook)から始まる\n * const [color, setColor] = useState<string>()\n * return (\n * <div data-novi-color={color}>\n * <ColorPicker label=\"配色\" onChange={setColor} />\n * </div>\n * )\n */\nexport function ColorPicker({\n size,\n label,\n description,\n errorMessage,\n value,\n defaultValue = DEFAULT_COLOR_ID,\n onChange,\n colors = COLOR_OPTIONS,\n showLabels = false,\n isDisabled,\n isReadOnly,\n isRequired,\n isInvalid,\n name,\n className,\n classNames,\n id,\n}: ColorPickerProps) {\n const s = colorPickerStyles({ size })\n\n return (\n <RACRadioGroup\n id={id}\n name={name}\n value={value}\n defaultValue={defaultValue}\n onChange={onChange}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isRequired={isRequired}\n isInvalid={isInvalid}\n data-slot=\"root\"\n className={s.root({ class: [className, classNames?.root] })}\n >\n {label !== undefined && (\n <Label data-slot=\"label\" className={s.label({ class: classNames?.label })}>\n {label}\n </Label>\n )}\n\n <div data-slot=\"list\" className={s.list({ class: classNames?.list })}>\n {colors.map((color) => (\n <RACRadio\n key={color.id}\n value={color.id}\n // スウォッチは色の面でしかない。名前を持たせないと読み上げが「ラジオボタン」で終わる\n aria-label={color.name}\n data-slot=\"item\"\n className={`group ${s.item({ class: classNames?.item })}`}\n >\n {({ isSelected }) => (\n <>\n {/*\n 色の解決は生成 CSS の `--novi-swatch-*` に委ねる。実装は色値を持たない。\n `data-novi-color` を置く形は採れない — テーマ宣言ごと切り替わってしまい、\n ライト / ダークの選択からも外れる(06 の申し送り)。\n */}\n <span\n data-slot=\"swatch\"\n style={{\n background: `var(--novi-swatch-${color.id})`,\n color: `var(--novi-swatch-${color.id}-fg)`,\n }}\n className={s.swatch({ class: classNames?.swatch })}\n >\n {isSelected && (\n <span\n aria-hidden=\"true\"\n data-slot=\"indicator\"\n className={s.indicator({ class: classNames?.indicator })}\n >\n ✓\n </span>\n )}\n </span>\n\n {showLabels && (\n <span\n data-slot=\"itemLabel\"\n className={s.itemLabel({ class: classNames?.itemLabel })}\n >\n {color.name}\n </span>\n )}\n </>\n )}\n </RACRadio>\n ))}\n </div>\n\n {description !== undefined && (\n <Text\n slot=\"description\"\n data-slot=\"description\"\n className={s.description({ class: classNames?.description })}\n >\n {description}\n </Text>\n )}\n\n {errorMessage !== undefined && (\n <FieldError\n data-slot=\"errorMessage\"\n className={s.errorMessage({ class: classNames?.errorMessage })}\n >\n {errorMessage}\n </FieldError>\n )}\n </RACRadioGroup>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;AAqBA,MAAa,gBAA4C,kBAAkB,KACxE,EAAE,IAAI,MAAM,mBAAmB;CAAE;CAAI;CAAM;AAAY,EAC1D;;;;;;;;;;;;;;;;AAiBA,SAAgB,YAAY,EAC1B,MACA,OACA,aACA,cACA,OACA,eAAe,kBACf,UACA,SAAS,eACT,aAAa,OACb,YACA,YACA,YACA,WACA,MACA,WACA,YACA,MACmB;CACnB,MAAM,IAAI,kBAAkB,EAAE,KAAK,CAAC;CAEpC,OACE,qBAACA,YAAD;EACM;EACE;EACC;EACO;EACJ;EACE;EACA;EACA;EACD;EACX,aAAU;EACV,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,YAAY,IAAI,EAAE,CAAC;EAX5D,UAAA;GAaG,UAAU,KAAA,KACT,oBAAC,OAAD;IAAO,aAAU;IAAQ,WAAW,EAAE,MAAM,EAAE,OAAO,YAAY,MAAM,CAAC;IACrE,UAAA;GACI,CAAA;GAGT,oBAAC,OAAD;IAAK,aAAU;IAAO,WAAW,EAAE,KAAK,EAAE,OAAO,YAAY,KAAK,CAAC;IAChE,UAAA,OAAO,KAAK,UACX,oBAACC,OAAD;KAEE,OAAO,MAAM;KAEb,cAAY,MAAM;KAClB,aAAU;KACV,WAAW,SAAS,EAAE,KAAK,EAAE,OAAO,YAAY,KAAK,CAAC;KAEpD,WAAA,EAAE,iBACF,qBAAA,UAAA,EAAA,UAAA,CAME,oBAAC,QAAD;MACE,aAAU;MACV,OAAO;OACL,YAAY,qBAAqB,MAAM,GAAG;OAC1C,OAAO,qBAAqB,MAAM,GAAG;MACvC;MACA,WAAW,EAAE,OAAO,EAAE,OAAO,YAAY,OAAO,CAAC;MAEhD,UAAA,cACC,oBAAC,QAAD;OACE,eAAY;OACZ,aAAU;OACV,WAAW,EAAE,UAAU,EAAE,OAAO,YAAY,UAAU,CAAC;OACxD,UAAA;MAEK,CAAA;KAEJ,CAAA,GAEL,cACC,oBAAC,QAAD;MACE,aAAU;MACV,WAAW,EAAE,UAAU,EAAE,OAAO,YAAY,UAAU,CAAC;MAEtD,UAAA,MAAM;KACH,CAAA,CAER,EAAA,CAAA;IAEI,GA3CH,MAAM,EA2CH,CACX;GACE,CAAA;GAEJ,gBAAgB,KAAA,KACf,oBAAC,MAAD;IACE,MAAK;IACL,aAAU;IACV,WAAW,EAAE,YAAY,EAAE,OAAO,YAAY,YAAY,CAAC;IAE1D,UAAA;GACG,CAAA;GAGP,iBAAiB,KAAA,KAChB,oBAAC,YAAD;IACE,aAAU;IACV,WAAW,EAAE,aAAa,EAAE,OAAO,YAAY,aAAa,CAAC;IAE5D,UAAA;GACS,CAAA;EAED;;AAEnB"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { VariantMap } from "@novi-ui/core";
|
|
2
|
+
//#region src/color-picker/color-picker.styles.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* ColorPicker のスタイル定義。
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* import { colorPickerStyles } from '@novi-ui/flatlay'
|
|
8
|
+
* import { tv } from 'tailwind-variants'
|
|
9
|
+
*
|
|
10
|
+
* const myPicker = tv({ extend: colorPickerStyles, slots: { list: 'grid-cols-2' } })
|
|
11
|
+
*/
|
|
12
|
+
declare const colorPickerStyles: import("tailwind-variants").TVReturnType<{
|
|
13
|
+
size: VariantMap<"sm" | "md" | "lg", {
|
|
14
|
+
swatch: string;
|
|
15
|
+
indicator: string;
|
|
16
|
+
}>;
|
|
17
|
+
}, {
|
|
18
|
+
root: string;
|
|
19
|
+
label: string;
|
|
20
|
+
description: string;
|
|
21
|
+
errorMessage: string;
|
|
22
|
+
/**
|
|
23
|
+
* 方眼。上辺と左辺だけを持ち、右辺と下辺は各升目が引く。
|
|
24
|
+
* こうすると隣り合う升で線が二重にならず、1px の格子になる。
|
|
25
|
+
*/
|
|
26
|
+
list: string;
|
|
27
|
+
item: string;
|
|
28
|
+
/**
|
|
29
|
+
* 色そのものを見せる面。
|
|
30
|
+
*
|
|
31
|
+
* **色は生成 CSS の `--novi-swatch-*` が解決する。** 実装が色値を持たないので、
|
|
32
|
+
* カラーセットが増えてもここは変わらず、light / dark の追従も生成 CSS 任せになる。
|
|
33
|
+
*/
|
|
34
|
+
swatch: string;
|
|
35
|
+
indicator: string;
|
|
36
|
+
itemLabel: string;
|
|
37
|
+
}, undefined, {
|
|
38
|
+
size: VariantMap<"sm" | "md" | "lg", {
|
|
39
|
+
swatch: string;
|
|
40
|
+
indicator: string;
|
|
41
|
+
}>;
|
|
42
|
+
}, {
|
|
43
|
+
root: string;
|
|
44
|
+
label: string;
|
|
45
|
+
description: string;
|
|
46
|
+
errorMessage: string;
|
|
47
|
+
/**
|
|
48
|
+
* 方眼。上辺と左辺だけを持ち、右辺と下辺は各升目が引く。
|
|
49
|
+
* こうすると隣り合う升で線が二重にならず、1px の格子になる。
|
|
50
|
+
*/
|
|
51
|
+
list: string;
|
|
52
|
+
item: string;
|
|
53
|
+
/**
|
|
54
|
+
* 色そのものを見せる面。
|
|
55
|
+
*
|
|
56
|
+
* **色は生成 CSS の `--novi-swatch-*` が解決する。** 実装が色値を持たないので、
|
|
57
|
+
* カラーセットが増えてもここは変わらず、light / dark の追従も生成 CSS 任せになる。
|
|
58
|
+
*/
|
|
59
|
+
swatch: string;
|
|
60
|
+
indicator: string;
|
|
61
|
+
itemLabel: string;
|
|
62
|
+
}, import("tailwind-variants").TVReturnTypeLike<{
|
|
63
|
+
size: VariantMap<"sm" | "md" | "lg", {
|
|
64
|
+
swatch: string;
|
|
65
|
+
indicator: string;
|
|
66
|
+
}>;
|
|
67
|
+
}, {
|
|
68
|
+
root: string;
|
|
69
|
+
label: string;
|
|
70
|
+
description: string;
|
|
71
|
+
errorMessage: string;
|
|
72
|
+
/**
|
|
73
|
+
* 方眼。上辺と左辺だけを持ち、右辺と下辺は各升目が引く。
|
|
74
|
+
* こうすると隣り合う升で線が二重にならず、1px の格子になる。
|
|
75
|
+
*/
|
|
76
|
+
list: string;
|
|
77
|
+
item: string;
|
|
78
|
+
/**
|
|
79
|
+
* 色そのものを見せる面。
|
|
80
|
+
*
|
|
81
|
+
* **色は生成 CSS の `--novi-swatch-*` が解決する。** 実装が色値を持たないので、
|
|
82
|
+
* カラーセットが増えてもここは変わらず、light / dark の追従も生成 CSS 任せになる。
|
|
83
|
+
*/
|
|
84
|
+
swatch: string;
|
|
85
|
+
indicator: string;
|
|
86
|
+
itemLabel: string;
|
|
87
|
+
}>>;
|
|
88
|
+
type ColorPickerStyleProps = Parameters<typeof colorPickerStyles>[0];
|
|
89
|
+
//#endregion
|
|
90
|
+
export { ColorPickerStyleProps, colorPickerStyles };
|
|
91
|
+
//# sourceMappingURL=color-picker.styles.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-picker.styles.d.mts","names":[],"sources":["../../src/color-picker/color-picker.styles.ts"],"mappings":";;;;;;;;;;;cA8Ea,+CAAiB;;IAfa;IAAmB;;;;;;;;;;;;;;;;;;;;;;;;IAAnB;IAAmB;;;;;;;;;;;;;;;;;;;;;;;;IAAnB;IAAmB;;;;;;;;;;;;;;;;;;;;;;;KAqBlD,wBAAwB,kBAAkB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { disabledState, focusRing } from "../styles/focus-ring.mjs";
|
|
2
|
+
import { mono } from "../styles/mono.mjs";
|
|
3
|
+
import { tv } from "tailwind-variants";
|
|
4
|
+
//#region src/color-picker/color-picker.styles.ts
|
|
5
|
+
/**
|
|
6
|
+
* Flatlay のカラー選択は**方眼に貼った色見本**。
|
|
7
|
+
*
|
|
8
|
+
* 両テーマは色面を隙間を空けて並べるが、ここは隙間を持たない。列は罫線で仕切られ、
|
|
9
|
+
* 見本は升目の中に収まる。方眼紙に絵の具を試し塗りした形で、
|
|
10
|
+
* 「階層は罫線でしか作れない」という原理がそのまま見本帳の形になる。
|
|
11
|
+
*
|
|
12
|
+
* **升目の罫線が見本の枠を兼ねる**ので、スウォッチ自身は枠を持たない。
|
|
13
|
+
* 二重に線を引くと升目が太って方眼に見えなくなる。
|
|
14
|
+
*/
|
|
15
|
+
const slots = {
|
|
16
|
+
root: ["flex flex-col gap-2", disabledState].join(" "),
|
|
17
|
+
label: `text-[length:var(--novi-text-sm)] text-[var(--novi-color-fg)] ${mono}`,
|
|
18
|
+
description: `text-[length:var(--novi-text-sm)] text-[var(--novi-color-muted)] ${mono}`,
|
|
19
|
+
errorMessage: `text-[length:var(--novi-text-sm)] text-[var(--novi-color-danger)] ${mono}`,
|
|
20
|
+
/**
|
|
21
|
+
* 方眼。上辺と左辺だけを持ち、右辺と下辺は各升目が引く。
|
|
22
|
+
* こうすると隣り合う升で線が二重にならず、1px の格子になる。
|
|
23
|
+
*/
|
|
24
|
+
list: ["grid grid-cols-4 w-fit", "border-t border-l border-[var(--novi-color-border-strong)]"].join(" "),
|
|
25
|
+
item: [
|
|
26
|
+
"inline-flex flex-col items-center gap-1",
|
|
27
|
+
"p-1.5",
|
|
28
|
+
"border-r border-b border-[var(--novi-color-border-strong)]",
|
|
29
|
+
"cursor-pointer data-[disabled]:cursor-default",
|
|
30
|
+
"bg-[var(--novi-color-bg)] data-[selected]:bg-[var(--novi-color-fg)]",
|
|
31
|
+
"transition-[background-color]",
|
|
32
|
+
"duration-[var(--novi-duration-fast)] ease-[var(--novi-ease-standard)]",
|
|
33
|
+
focusRing
|
|
34
|
+
].join(" "),
|
|
35
|
+
/**
|
|
36
|
+
* 色そのものを見せる面。
|
|
37
|
+
*
|
|
38
|
+
* **色は生成 CSS の `--novi-swatch-*` が解決する。** 実装が色値を持たないので、
|
|
39
|
+
* カラーセットが増えてもここは変わらず、light / dark の追従も生成 CSS 任せになる。
|
|
40
|
+
*/
|
|
41
|
+
swatch: "inline-grid place-items-center rounded-[var(--novi-radius-none)]",
|
|
42
|
+
indicator: `leading-none ${mono}`,
|
|
43
|
+
itemLabel: [
|
|
44
|
+
"text-[length:var(--novi-text-sm)] text-[var(--novi-color-muted)]",
|
|
45
|
+
"group-data-[selected]:text-[var(--novi-color-bg)]",
|
|
46
|
+
mono
|
|
47
|
+
].join(" ")
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* ColorPicker のスタイル定義。
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* import { colorPickerStyles } from '@novi-ui/flatlay'
|
|
54
|
+
* import { tv } from 'tailwind-variants'
|
|
55
|
+
*
|
|
56
|
+
* const myPicker = tv({ extend: colorPickerStyles, slots: { list: 'grid-cols-2' } })
|
|
57
|
+
*/
|
|
58
|
+
const colorPickerStyles = tv({
|
|
59
|
+
slots,
|
|
60
|
+
variants: { size: {
|
|
61
|
+
sm: {
|
|
62
|
+
swatch: "size-6",
|
|
63
|
+
indicator: "text-[length:var(--novi-text-xs)]"
|
|
64
|
+
},
|
|
65
|
+
md: {
|
|
66
|
+
swatch: "size-7",
|
|
67
|
+
indicator: "text-[length:var(--novi-text-sm)]"
|
|
68
|
+
},
|
|
69
|
+
lg: {
|
|
70
|
+
swatch: "size-9",
|
|
71
|
+
indicator: "text-[length:var(--novi-text-base)]"
|
|
72
|
+
}
|
|
73
|
+
} },
|
|
74
|
+
defaultVariants: { size: "md" }
|
|
75
|
+
});
|
|
76
|
+
//#endregion
|
|
77
|
+
export { colorPickerStyles };
|
|
78
|
+
|
|
79
|
+
//# sourceMappingURL=color-picker.styles.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-picker.styles.mjs","names":[],"sources":["../../src/color-picker/color-picker.styles.ts"],"sourcesContent":["import type {\n colorPickerRequiredSlots,\n colorPickerSlots,\n NoviSize,\n SlotMap,\n VariantMap,\n} from '@novi-ui/core'\nimport { tv } from 'tailwind-variants'\nimport { disabledState, focusRing } from '../styles/focus-ring'\nimport { mono } from '../styles/mono'\n\n/**\n * Flatlay のカラー選択は**方眼に貼った色見本**。\n *\n * 両テーマは色面を隙間を空けて並べるが、ここは隙間を持たない。列は罫線で仕切られ、\n * 見本は升目の中に収まる。方眼紙に絵の具を試し塗りした形で、\n * 「階層は罫線でしか作れない」という原理がそのまま見本帳の形になる。\n *\n * **升目の罫線が見本の枠を兼ねる**ので、スウォッチ自身は枠を持たない。\n * 二重に線を引くと升目が太って方眼に見えなくなる。\n */\nconst slots = {\n root: ['flex flex-col gap-2', disabledState].join(' '),\n // 項目名は等幅(Input / CheckboxGroup と同じ扱い・ADR-F7)\n label: `text-[length:var(--novi-text-sm)] text-[var(--novi-color-fg)] ${mono}`,\n description: `text-[length:var(--novi-text-sm)] text-[var(--novi-color-muted)] ${mono}`,\n errorMessage: `text-[length:var(--novi-text-sm)] text-[var(--novi-color-danger)] ${mono}`,\n /**\n * 方眼。上辺と左辺だけを持ち、右辺と下辺は各升目が引く。\n * こうすると隣り合う升で線が二重にならず、1px の格子になる。\n */\n list: [\n 'grid grid-cols-4 w-fit',\n 'border-t border-l border-[var(--novi-color-border-strong)]',\n ].join(' '),\n item: [\n 'inline-flex flex-col items-center gap-1',\n 'p-1.5',\n 'border-r border-b border-[var(--novi-color-border-strong)]',\n 'cursor-pointer data-[disabled]:cursor-default',\n // 選択は**枠の反転**。升目の地が紙からインクに入れ替わり、見本が台紙に載る\n 'bg-[var(--novi-color-bg)] data-[selected]:bg-[var(--novi-color-fg)]',\n 'transition-[background-color]',\n 'duration-[var(--novi-duration-fast)] ease-[var(--novi-ease-standard)]',\n focusRing,\n ].join(' '),\n /**\n * 色そのものを見せる面。\n *\n * **色は生成 CSS の `--novi-swatch-*` が解決する。** 実装が色値を持たないので、\n * カラーセットが増えてもここは変わらず、light / dark の追従も生成 CSS 任せになる。\n */\n swatch: 'inline-grid place-items-center rounded-[var(--novi-radius-none)]',\n // 色だけに頼らず印でも示す(WCAG 1.4.1)。印は Checkbox と同じ等幅の文字\n indicator: `leading-none ${mono}`,\n itemLabel: [\n 'text-[length:var(--novi-text-sm)] text-[var(--novi-color-muted)]',\n 'group-data-[selected]:text-[var(--novi-color-bg)]',\n mono,\n ].join(' '),\n} satisfies SlotMap<typeof colorPickerSlots, (typeof colorPickerRequiredSlots)[number]>\n\n/** md の見本は 28px 角。Button の高さ・Switch のトラック幅と同じ寸法で揃える。 */\nconst size: VariantMap<NoviSize, { swatch: string; indicator: string }> = {\n sm: { swatch: 'size-6', indicator: 'text-[length:var(--novi-text-xs)]' },\n md: { swatch: 'size-7', indicator: 'text-[length:var(--novi-text-sm)]' },\n lg: { swatch: 'size-9', indicator: 'text-[length:var(--novi-text-base)]' },\n}\n\n/**\n * ColorPicker のスタイル定義。\n *\n * @example\n * import { colorPickerStyles } from '@novi-ui/flatlay'\n * import { tv } from 'tailwind-variants'\n *\n * const myPicker = tv({ extend: colorPickerStyles, slots: { list: 'grid-cols-2' } })\n */\nexport const colorPickerStyles = tv({\n slots,\n variants: { size },\n defaultVariants: { size: 'md' },\n})\n\nexport type ColorPickerStyleProps = Parameters<typeof colorPickerStyles>[0]\n"],"mappings":";;;;;;;;;;;;;;AAqBA,MAAM,QAAQ;CACZ,MAAM,CAAC,uBAAuB,aAAa,CAAC,CAAC,KAAK,GAAG;CAErD,OAAO,iEAAiE;CACxE,aAAa,oEAAoE;CACjF,cAAc,qEAAqE;;;;;CAKnF,MAAM,CACJ,0BACA,4DACF,CAAC,CAAC,KAAK,GAAG;CACV,MAAM;EACJ;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;CACF,CAAC,CAAC,KAAK,GAAG;;;;;;;CAOV,QAAQ;CAER,WAAW,gBAAgB;CAC3B,WAAW;EACT;EACA;EACA;CACF,CAAC,CAAC,KAAK,GAAG;AACZ;;;;;;;;;;AAkBA,MAAa,oBAAoB,GAAG;CAClC;CACA,UAAU,EAAE;EAhBZ,IAAI;GAAE,QAAQ;GAAU,WAAW;EAAoC;EACvE,IAAI;GAAE,QAAQ;GAAU,WAAW;EAAoC;EACvE,IAAI;GAAE,QAAQ;GAAU,WAAW;EAAsC;CAc7D,EAAK;CACjB,iBAAiB,EAAE,MAAM,KAAK;AAChC,CAAC"}
|