@zappie/theme-base 0.1.4 → 0.1.5

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/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @zappie/theme-base
2
2
 
3
+ ## 0.1.5
4
+
5
+ ### Patch Changes
6
+
7
+ - de930ad: Item option groups no longer say "Required" twice to a screen reader. Their heading already shows "Required*", so they turn off the hidden note `OptionGroup` adds.
8
+ - Updated dependencies [f7397bd]
9
+ - @zappie/foundations@0.1.8
10
+
3
11
  ## 0.1.4
4
12
 
5
13
  ### Patch Changes
@@ -22,6 +22,7 @@ function OptionsSection({ group }) {
22
22
  group,
23
23
  className: "z-base-option-group",
24
24
  "aria-label": group.name,
25
+ requiredNote: false,
25
26
  children: ({ quantities, setQuantity, invalid }) => /* @__PURE__ */ jsxs(Fragment, { children: [
26
27
  /* @__PURE__ */ jsx("h3", { className: "z-base-option-heading", children: /* @__PURE__ */ jsxs(
27
28
  "button",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/cart/line-options.tsx"],
4
- "sourcesContent": ["import {\n Choice,\n ItemForm,\n Money,\n OptionGroup,\n Quantity,\n} from \"@zappie/foundations\";\nimport type { OptionGroup as Group } from \"@zappie/sdk\";\nimport { Fragment, useState } from \"react\";\nexport function LineOptions() {\n return (\n <ItemForm.Options>\n {({ groups }) =>\n [...groups]\n .sort(\n (left, right) =>\n Number(right.isAttribute) - Number(left.isAttribute),\n )\n .map((group) => <OptionsSection key={group.id} group={group} />)\n }\n </ItemForm.Options>\n );\n}\nfunction OptionsSection({ group }: { group: Group }) {\n const [expanded, setExpanded] = useState(true);\n const count =\n group.selection.max === group.selection.min && group.selection.min > 0\n ? `Exactly ${group.selection.min}`\n : group.selection.max\n ? `Choose up to ${group.selection.max}`\n : group.selection.min\n ? `Choose at least ${group.selection.min}`\n : \"Optional\";\n return (\n <OptionGroup\n group={group}\n className=\"z-base-option-group\"\n aria-label={group.name}\n >\n {({ quantities, setQuantity, invalid }) => (\n <Fragment>\n <h3 className=\"z-base-option-heading\">\n <button\n type=\"button\"\n aria-expanded={expanded || invalid}\n onClick={() => setExpanded(!expanded)}\n >\n <span>{group.name}</span>\n <span className=\"z-base-option-rule\">\n {count}\n {group.required && <strong> Required*</strong>}\n </span>\n <span aria-hidden=\"true\" className=\"z-base-option-chevron\">\n {expanded || invalid ? \"\u2304\" : \"\u203A\"}\n </span>\n </button>\n </h3>\n {(expanded || invalid) && (\n <div className=\"z-base-option-choices\">\n {group.helpText && <p>{group.helpText}</p>}\n {group.kind === \"select\" &&\n group.choices.map((choice) => (\n <div key={choice.id} className=\"z-base-choice-row\">\n <Choice choice={choice} className=\"z-base-choice\">\n <span className=\"z-base-choice-label\">\n <span>{choice.name}</span>\n {(choice.priceHint ?? choice.price).amountMinor !==\n 0 && (\n <span className=\"z-base-choice-price\">\n {(choice.priceHint ?? choice.price).amountMinor > 0\n ? \"+\"\n : \"\"}\n <Money value={choice.priceHint ?? choice.price} />\n </span>\n )}\n {!choice.isAvailable && (\n <span className=\"z-base-choice-price\">\n Unavailable\n </span>\n )}\n </span>\n </Choice>\n {choice.quantity && (quantities[choice.id] ?? 0) > 0 && (\n <Quantity.Root\n className=\"z-base-quantity\"\n value={quantities[choice.id] ?? 0}\n min={0}\n max={choice.quantity.max ?? 99}\n disabled={!choice.isAvailable}\n onValueChange={(quantity) =>\n setQuantity(choice.id, quantity)\n }\n >\n <Quantity.Decrement\n aria-label={`Decrease ${choice.name}`}\n >\n \u2212\n </Quantity.Decrement>\n <Quantity.Value\n aria-label={`${choice.name} quantity`}\n />\n <Quantity.Increment\n aria-label={`Increase ${choice.name}`}\n >\n +\n </Quantity.Increment>\n </Quantity.Root>\n )}\n </div>\n ))}\n {(group.kind !== \"select\" || group.isInformational) && (\n <OptionGroup.Input className=\"z-base-input\" />\n )}\n </div>\n )}\n </Fragment>\n )}\n </OptionGroup>\n );\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n Choice,\n ItemForm,\n Money,\n OptionGroup,\n Quantity,\n} from \"@zappie/foundations\";\nimport type { OptionGroup as Group } from \"@zappie/sdk\";\nimport { Fragment, useState } from \"react\";\nexport function LineOptions() {\n return (\n <ItemForm.Options>\n {({ groups }) =>\n [...groups]\n .sort(\n (left, right) =>\n Number(right.isAttribute) - Number(left.isAttribute),\n )\n .map((group) => <OptionsSection key={group.id} group={group} />)\n }\n </ItemForm.Options>\n );\n}\nfunction OptionsSection({ group }: { group: Group }) {\n const [expanded, setExpanded] = useState(true);\n const count =\n group.selection.max === group.selection.min && group.selection.min > 0\n ? `Exactly ${group.selection.min}`\n : group.selection.max\n ? `Choose up to ${group.selection.max}`\n : group.selection.min\n ? `Choose at least ${group.selection.min}`\n : \"Optional\";\n return (\n <OptionGroup\n group={group}\n className=\"z-base-option-group\"\n aria-label={group.name}\n // The heading's \"Required*\" already says so.\n requiredNote={false}\n >\n {({ quantities, setQuantity, invalid }) => (\n <Fragment>\n <h3 className=\"z-base-option-heading\">\n <button\n type=\"button\"\n aria-expanded={expanded || invalid}\n onClick={() => setExpanded(!expanded)}\n >\n <span>{group.name}</span>\n <span className=\"z-base-option-rule\">\n {count}\n {group.required && <strong> Required*</strong>}\n </span>\n <span aria-hidden=\"true\" className=\"z-base-option-chevron\">\n {expanded || invalid ? \"\u2304\" : \"\u203A\"}\n </span>\n </button>\n </h3>\n {(expanded || invalid) && (\n <div className=\"z-base-option-choices\">\n {group.helpText && <p>{group.helpText}</p>}\n {group.kind === \"select\" &&\n group.choices.map((choice) => (\n <div key={choice.id} className=\"z-base-choice-row\">\n <Choice choice={choice} className=\"z-base-choice\">\n <span className=\"z-base-choice-label\">\n <span>{choice.name}</span>\n {(choice.priceHint ?? choice.price).amountMinor !==\n 0 && (\n <span className=\"z-base-choice-price\">\n {(choice.priceHint ?? choice.price).amountMinor > 0\n ? \"+\"\n : \"\"}\n <Money value={choice.priceHint ?? choice.price} />\n </span>\n )}\n {!choice.isAvailable && (\n <span className=\"z-base-choice-price\">\n Unavailable\n </span>\n )}\n </span>\n </Choice>\n {choice.quantity && (quantities[choice.id] ?? 0) > 0 && (\n <Quantity.Root\n className=\"z-base-quantity\"\n value={quantities[choice.id] ?? 0}\n min={0}\n max={choice.quantity.max ?? 99}\n disabled={!choice.isAvailable}\n onValueChange={(quantity) =>\n setQuantity(choice.id, quantity)\n }\n >\n <Quantity.Decrement\n aria-label={`Decrease ${choice.name}`}\n >\n \u2212\n </Quantity.Decrement>\n <Quantity.Value\n aria-label={`${choice.name} quantity`}\n />\n <Quantity.Increment\n aria-label={`Increase ${choice.name}`}\n >\n +\n </Quantity.Increment>\n </Quantity.Root>\n )}\n </div>\n ))}\n {(group.kind !== \"select\" || group.isInformational) && (\n <OptionGroup.Input className=\"z-base-input\" />\n )}\n </div>\n )}\n </Fragment>\n )}\n </OptionGroup>\n );\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zappie/theme-base",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "The base storefront theme Zappie's own storefront app renders, built only from Zappie's public packages.",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -54,7 +54,7 @@
54
54
  "CHANGELOG.md"
55
55
  ],
56
56
  "dependencies": {
57
- "@zappie/foundations": "^0.1.7",
57
+ "@zappie/foundations": "^0.1.8",
58
58
  "@zappie/sdk": "^0.1.13",
59
59
  "@zappie/tokens": "^0.1.2"
60
60
  },